package framework.entities;

import java.io.Serializable;
import java.util.HashMap;

import framework.BaseEntity;

/** Описывает сущность - организацию
 */
public class Organizaciya extends BaseEntity implements Serializable, Cloneable{

	/** Присваивает данные полям
	 * @param orgItems массив полей
	 * @param values значения этих полей
	 * @param attachedFiles архив с именами прикрепляемых файлов
	 */
	public Organizaciya(ORGANIZATION[] orgItems, String[] values, String[] attachedFiles){
		for(int i = 0; i < orgItems.length; i++){
			setOrgData(orgItems[i], values[i]);
		}
		setOrgAttachedFile(attachedFiles);
	}

	/**
	 * comment
	 */
	private static final long serialVersionUID = 1L;
	private String[] attachedFilesArray;
	private HashMap<ORGANIZATION, String> organization = new HashMap<ORGANIZATION, String>();

	/** Перечисление полей организации
	 */
	public enum ORGANIZATION{
		STATUS("Статус"), FULL_NAME("Полное наименование"), OGRN("ОГРН"), INN("ИНН"), KPP("КПП"),
		ADDRESS("Адрес"), TIMEZONE("Часовой пояс"), OKATO_CODE("Код ОКАТО"), OKTMO_CODE("Код ОКТМО"), OKFS_CODE("Код ОКФС"), OKOPF_CODE("Код ОКОПФ"),
		OKVED_CODE("Код ОКВЕД"), POSTAL_ADDRESS("Почтовый адрес"), EMAIL("Электронный адрес"), WEB_SITE("Веб сайт"), CONTACT_SECONDNAME("Фамилия контактного лица"),
		CONTACT_FIRSTNAME("Имя контактного лица"),CONTACT_MIDDLENAME("Отчестов контактного лица"),COUNTRY_CODE("Код страны"),CITY_CODE("Код города"),NUMBER("Номер тел/факс"),
		EXT_CODE("Расширяющий номер тел/факс"), ADDITIONAL_INFO("Дополнительная информация"), VID_YUR_LICA("Вид юридического лица");

		private String	val;

		/** Присваивает значение полю
		 * @param name значение/название элемента перечисления
		 */
		ORGANIZATION(String name) {
			val = name;
		}

		@Override
		public String toString() {
			return val;
		}
	}

	/** Получает значение поля организации.
	 * @param item поле
	 * @return значение поля
	 */
	public String getOrgData(ORGANIZATION item){
		logger.info(item.toString() + " организации содержит значение: " + organization.get(item));
		return organization.get(item);
	}

	/** Устанавливает значение полю организации
 	 * @param item поле
	 * @param value значение
	 */
	public void setOrgData(ORGANIZATION item, String value){
		logger.info(item.toString() + " организации инициализируется значением: " + value);
		organization.put(item, value);
	}

	/** Устанавливает список прикрепленных файлов.
	 * @param attachedFiles массив файлов
	 */
	public void setOrgAttachedFile(String[] attachedFiles){
		logger.info("Организация содержит следующие документы: ");
		for(int i = 0; i < attachedFiles.length; i++){
			logger.info(attachedFiles[i]);
		}
		attachedFilesArray = attachedFiles;
	}

	/** Возвращает список прикрепленных к орг. файлов.
	 * @return список наименований прикрепленных к орг. файлов
	 */
	public String[] getOrgAttachedFile(){
		logger.info("Организация содержит следующие документы: ");
		for(int i = 0; i < attachedFilesArray.length; i++){
			logger.info(attachedFilesArray[i]);
		}
		return attachedFilesArray;
	}

	@Override
	protected String formatLogMsg(String message) {
		return null;
	}
}
